import { LocationQueryRaw } from "vue-router";

/**
 * 打开商品详情弹框参数
 */
export interface ProductDetailsProps {
    /**
     * skuId
     */
    skuId: number;
    /**
     * 是否显示本组件
     */
    isShowModal: boolean;

}


/**
 * 商品搜索返回结果
 *
 * ProductSearchVo
 */
export interface ProductSearchVo {
    /**
     * 属性信息
     */
    attrs?: AttrVo[] | null;
    /**
     * 品牌信息
     */
    brands?: BrandVo[] | null;
    /**
     * 分类信息
     */
    categories?: CategoryVo[] | null;
    /**
     * 商品信息列表
     */
    products?: ProductEs[] | null;
}

/**
 * 商品属性Vo
 *
 * AttrVo
 */
export interface AttrVo {
    /**
     * 属性ID
     */
    attrId?: number | null;
    /**
     * 属性名
     */
    attrName?: null | string;
    /**
     * 属性值
     */
    attrValues?: string[] | null;
}

/**
 * 品牌信息Vo
 *
 * BrandVo
 */
export interface BrandVo {
    /**
     * 品牌ID
     */
    brandId?: number | null;
    /**
     * 品牌LOGO地址
     */
    brandImg?: null | string;
    /**
     * 品牌名称
     */
    brandName?: null | string;
}

/**
 * 商品分类Vo
 *
 * CategoryVo
 */
export interface CategoryVo {
    /**
     * 分类ID
     */
    categoryId?: number | null;
    /**
     * 分类名称
     */
    categoryName?: null | string;
}

/**
 * es 商品信息
 *
 * ProductEs
 */
export interface ProductEs {
    /**
     * 规格参数信息
     */
    attrs?: AttrsPoJo[] | null;
    /**
     * 商品所属品牌id
     */
    brandId?: number | null;
    /**
     * 品牌图片地址
     */
    brandImg?: null | string;
    /**
     * 品牌名称
     */
    brandName?: null | string;
    /**
     * 商品所属分类id
     */
    catalogId?: number | null;
    /**
     * 分类名称
     */
    catalogName?: null | string;
    /**
     * 是否有库存
     */
    hasStock?: HasStock;
    /**
     * 热度评分
     */
    hotScore?: number | null;
    /**
     * 销量
     */
    saleCount?: number | null;
    /**
     * 单款商品id
     */
    skuId?: number | null;
    /**
     * 单款商品图片
     */
    skuImg?: null | string;
    /**
     * 单款商品价格
     */
    skuPrice?: number | null;
    /**
     * 单款商品名称
     */
    skuTitle?: null | string;
    /**
     * 商品spuId
     */
    spuId?: number | null;
}

/**
 * 自定义规格参数对象
 *
 * AttrsPoJo
 */
export interface AttrsPoJo {
    /**
     * 规格参数id
     */
    attrId?: number | null;
    /**
     * 规格参数名
     */
    attrName?: null | string;
    /**
     * 规格参数值
     */
    attrValue?: null | string;
}


/**
 * 商品检索参数
 *
 * ProductSearchDto
 */
export interface ProductSearchDto {
    /**
     * 属性
     */
    attrs?: string[] | null;
    /**
     * 品牌Id
     */
    brandId?: number[] | null;
    /**
     * 是否显示有货
     */
    hasStock?: HasStock;
    pageNum?: number | null;
    /**
     * 每页显示记录数
     */
    pageSize?: number | null;
    /**
     * 检索关键字
     */
    queryParam?: null | string;
    /**
     * 价格区间
     */
    skuPrice?: null | string;
    /**
     * 排序条件
     */
    sort?: Sort;
    /**
     * 三级分类ID
     */
    thirdCatId?: number | null;
}

/**
 * 是否显示有货
 */
export enum HasStock {
    No = "NO",
    Yes = "YES",
    无 = "无",
    有 = "有",
}

/**
 * 排序条件
 */
export enum Sort {
    HotScoreAscOrDesc = "HOT_SCORE_ASC_OR_DESC",
    SaleContAscOrDesc = "SALE_CONT_ASC_OR_DESC",
    SkuPriceAscOrDesc = "SKU_PRICE_ASC_OR_DESC",
    价格升序降序 = "价格升序/降序",
    热度升序降序 = "热度升序/降序",
    销量升序降序 = "销量升序/降序",
}

/**
 * 检索功能路由参数
 */
export interface SearchRouterParams extends LocationQueryRaw {
    /**
     * 三级分类id
     */
    thirdCatId?: number;
    /**
     * 检索条件
     */
    queryParam?: string;
    /**
     * 规格参数
     * @see `${attrId}_${attrValue}`
     */
    attrs?: string[];
    /**
     * 品牌id
     */
    brandId?: number[];
}